#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 53*3

int longint[MAX] = {0};
int longintlen = 0;

int M = 0, N = 0, C = 0;

void showlonging()
{
    int i = longintlen-1;
    while(i >= 0)
    {
        printf("%d", longint[i--]);
    }
    printf("\n");
}

void chen(int k)
{
    int i = 0, c = 0, d = 0;
    for(i = 0; i < longintlen; i++)
    {
        d = longint[i]*k + c;
        longint[i] = d % 10;
        c = d / 10;
    }
    while(c != 0)
    {
        longint[longintlen++] = c % 10;
        c /= 10;
    }
}

void chu(int k)
{
    int i = 0, r = 0;
    int flag = 0;


    for(i = longintlen-1; i >= 0; i--)
    {
        r = r*10 + longint[i];
        if(r >= k)
        {
            flag = 1;
            longint[i] = r/k;
            r %= k;
        }
        else
        {
            longint[i] = 0;
        }
        if(flag == 0)
        {
            longintlen--;
        }

    }
    //showlonging();
}


//C = N! / (N-M)!M!

void process()
{
    int i = 0;

    longint[0] = 1;
    longintlen = 1;

    for(i = M+1; i <= N; i++)
    {
        chen(i);
    }
    //showlonging();
    for(i = 1; i <= N-M; i++)
    {
        chu(i);
    }
    //showlonging();
    printf("%d things taken %d at a time is ", N, M);
    i = longintlen-1;
    while(i >= 0)
    {
        printf("%d", longint[i--]);
    }
    printf(" exactly.\n");
}

int main()
{
    //freopen("bin\\debug\\in.txt", "r", stdin);

    while(1)
    {
        scanf("%d%d", &N, &M);

        if(M == 0 || N == 0)
        {
            break;
        }
        process();
    }

    return 0;
}
